package com.jiang.专题.数组.Q189;

/**
 * @author Jiang
 * @version 1.0
 * @date 2024/12/14 21:07
 */
class Solution {
    // 额外数组法
    public void rotate(int[] nums, int k) {
        int len = nums.length;
        int[] arr = new int[len];
        for (int i = 0; i < len; i++) {
            arr[(i + k) % len] = nums[i];
        }
        System.arraycopy(arr, 0, nums, 0, len);
    }

    // 环状替换
    // public void rotate(int[] nums, int k) {
    //     int len = nums.length;
    //     k = k % len;
    //     reverse(nums, 0, len - 1);
    //     reverse(nums, 0, k - 1);
    //     reverse(nums, k, len - 1);
    // }

    // public void reverse(int[] nums, int l, int r) {
    //     while(l < r) {
    //         int temp = nums[l];
    //         nums[l] = nums[r];
    //         nums[r] = temp;
    //         l++;
    //         r--;
    //     }
    // }
}
